<?php

include_once("../dao/conexao_class.php");
include_once("../model/telefone_departamento_model_class.php");

class TelefoneDepartamentoDAO {

    private $insert = "INSERT INTO telefone(fun_id, ema_telefone, ema_tipo) values(?, ?, ?);";
    private $update = "UPDATE telefone SET ema_telefone = ?, ema_tipo = ? WHERE fun_id = ? AND ema_telefone = ? AND ema_tipo = ?;";
    private $delete = "DELETE FROM telefone WHERE fun_id = ? AND ema_telefone = ? AND ema_tipo = ?;";
    private $delete_all = "DELETE FROM telefone WHERE fun_id = ?;";
    private $select = "SELECT * FROM telefone WHERE fun_id = ?";
    private $select_all = "SELECT * FROM telefone;";

    function insert($objTelefone) {
        //conectando ao banco
        $objConn = new Conexao();
        $conn = $objConn->conecta();
//        var_dump($conn);
        //criando o preparedStatment
        if ($stm = $conn->prepare($this->insert)) {

            $stm->bind_param("iss", $objTelefone->getDepartamento(),$objTelefone->getTelefone(),$objTelefone->getTipo());

            if ($stm->execute()) {
                $conn->close();
                return true;
            } else {
                $conn->close();
                return false;
            }
        } else {
            return false;
        }
    }

    function update($objTelefoneAntigo, $objTelefoneNovo) {

        $objConn = new Conexao();
        $conn = $objConn->conecta();

        if ($stm = $conn->prepare($this->update)) {

            $stm->bind_param("ssiss",$objTelefoneNovo->getTelefone(),$objTelefoneNovo->getTipo(),
                    $objTelefoneAntigo->getDepartamento(),$objTelefoneAntigo->getTelefone(),$objTelefoneAntigo->getTipo());
            
            if ($stm->execute()) {
                $conn->close();
                return true;
            } else {
                $conn->close();
                return false;
            }
        }
        return false;
    }

    function deleteAll($id) {

        $objConn = new Conexao();
        $conn = $objConn->conecta();

        if ($stm = $conn->prepare($this->delete_all)) {

            $stm->bind_param("i", $id);

            if ($stm->execute()) {
                $conn->close();
                return true;
            } else {
                $conn->close();
                return false;
            }
        }
        return false;
    }
    
    function delete($objTelefone) {

        $objConn = new Conexao();
        $conn = $objConn->conecta();

        if ($stm = $conn->prepare($this->delete)) {

            $stm->bind_param("iss", $objTelefone->getDepartamento(),$objTelefone->getTelefone(),$objTelefone->getTipo());

            if ($stm->execute()) {
                $conn->close();
                return true;
            } else {
                $conn->close();
                return false;
            }
        }
        return false;
    }

    function findTelefoneByDepartamento($idFunc){
        
        $objConn = new Conexao();
        $conn = $objConn->conecta();
        $telM = new TelefoneDepartamentoModel();
        
        if($stm = $conn->prepare($this->select)){
            
            $stm->bind_param("i", $idFunc);
            
            $stm->execute();
            
            $stm->bind_result($departamento,$telefone,$tipo);
            
            $i = 0;
            while($stm->fetch()){
                
                $telM = new TelefoneDepartamentoModel();
                
                $telM->setDepartamento($departamento);
                $telM->setTelefone($telefone);
                $telM->setTipo($tipo);
                
                $lista[$i++] = $telM;
            }
            
            $conn->close();
            return $lista;
        }
    }
    
    function findAllTelefone() {

        $objConn = new Conexao();
        $conn = $objConn->conecta();
        $telM = new TelefoneDepartamentoModel();
        $lista = array();
        if ($stm = $conn->prepare($this->select_all)) {

            $stm->execute();

            //atribui o resultado encontrado as variaveis
            $stm->bind_result($departamento,$telefone,$tipo);


            //para cada resultado encontrado
            $i = 0;
            while($stm->fetch()){
                
                $telM = new TelefoneDepartamentoModel();
                
                $telM->setDepartamento($departamento);
                $telM->setTelefone($telefone);
                $telM->setTipo($tipo);
                
                $lista[$i++] = $telM;
            }

            $conn->close();
            return $lista;
        }
    }

}

//$teste = new TelefoneDAO();
//$ema = new TelefoneModel();
////$ema->setId(3);
//$ema->setDescricao("Administraçao");
//
////$ema = 3;
//if($teste->insert($ema)){
//    printf("Deletado com sucesso!");
//}else{
//    printf("Erro ao deletar!");
//}
//
//var_dump($teste->findAllTelefone());

